package main
import "fmt"

//定义老师的结构体，将老师中的各个属性，统一放入结构体中管理：
type Teacher struct{
	//变量名字大写，则外界可以访问这个属性：
	Name string
	Age int
	School string
}

//方式1:
// func main(){
// 	//创建老师结构体的实例，对象、变量：
// 	var ma Teacher //var a int
// 	fmt.Println(ma)	//在未赋值时默认值：{ 0 }，null 0 null
// 	ma.Name = "马士兵"
// 	ma.Age = 45
// 	ma.School = "清华大学"
// 	fmt.Println(ma)
// 	fmt.Println(ma.Name)
// }

//方式2:
// func main(){
// 	//创建老师结构体的实例、对象、变量：
// 	// var t Teacher = Teacher{}
// 	// fmt.Println(t)
// 	// t.Name = "赵珊珊"
// 	// t.Age = 31
// 	// t.School = "黑龙江大学"
// 	// fmt.Println(t)

// 	var t Teacher = Teacher{"赵珊珊",31,"黑龙江大学"}
// 	fmt.Println(t)
// }

// //方式3:
// func main(){
// 	//创建老师结构体的实例、对象、变量：
// 	var t *Teacher = new(Teacher)
// 	//t是指针，t其实指向的就是地址，应该给这个地址的指向的对象的字段进行赋值操作：
// 	(*t).Name = "Lee"
// 	(*t).Age = 32
// 	t.School = "龙岗中专"	//go编译器底层对t.School转化(*t).School = "龙岗中专"
// 	//为了符合程序员的编程习惯，go提供了简化的赋值方式
// 	fmt.Println(*t)
// }

//方式4:
func main(){
	//创建老师结构体的实例、对象、变量：
	var t *Teacher = &Teacher{}
	(*t).Name = "Lee"
	(*t).Age = 32
	t.School = "龙岗中专"
	fmt.Println(*t)
}